<?php
namespace Swiftx\View;
use Swiftx\Interfaces\View\Engine;

class Smarty implements Engine {

    /**
     * 对象实例
     * @var \Smarty
     */
    protected $instance;

    /**
     * 构造函数
     */
    public function __construct(){
        $this->instance = new \Smarty();
    }

    /**
     * 设置调试模式
     * @param bool $status
     * @return void
     */
    public function setDebug(bool $status){
        $this->instance->setDebugging($status);
    }

    /**
     * 设置编译目录
     * @param string $path
     */
    public function setCompileDir(string $path){
        $this->instance->setCompileDir($path);
    }

    /**
     * 设置编译目录
     * @param string $path
     */
    public function setCacheDir(string $path){
        $this->instance->setCacheDir($path);
    }

    /**
     * 设置模板目录
     * @param string $path
     */
    public function setTemplateDir(string $path){
        $this->instance->setTemplateDir($path);
    }

    /**
     * 模板数据赋值
     * @param string $name
     * @param mixed $value
     * @return void
     */
    public function assign(string $name, $value = null){
        $this->instance->assign($name, $value);
    }

    /**
     * 获取渲染后的模板数据
     * @param string $template
     * @return string
     */
    public function fetch(string $template):string{
        return $this->instance->fetch($template);
    }

    /**
     * 渲染输出模板
     * @param string $template
     * @return void
     */
    public function display(string $template){
        $this->instance->display($template);
    }
}